import request from '../../utils/request';
import PubSub from 'pubsub-js';
import moment from 'moment'
const app = getApp();
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		isPlay:false, //音乐是否播放
		song:{}, //歌曲详情
		musicId:'',
		musicLink:'',
		currentTime: '00:00',  // 实时时间
		durationTime: '00:00', // 总时长
		currentWidth: 0, // 实时进度条的宽度

	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {
		let musicId = options.id
		this.setData({
			musicId
		});
		// 获取歌曲详情
		this.getMusicInfo(musicId);
		// 创建控制音乐播放的实例
		this.backgroundAudioManager = wx.getBackgroundAudioManager();
		// 判断当前页面是否在播放
		if(app.globalData.isMusicPlay && app.globalData.musicId ===musicId){
			this.setData({
				isPlay: true
			})
		}
		this.musicPlay()
		// 修改音乐播放状态
		this.backgroundAudioManager.onPlay(()=>{
			this.setData({
				isPlay:true
			})
			// 修改全局播放状态
			app.globalData.isMusicPlay = true;
			app.globalData.musicId = musicId
		});
		this.backgroundAudioManager.onPause(()=>{
			this.setData({
				isPlay:false
			})
			app.globalData.isMusicPlay = false;
		});
		this.backgroundAudioManager.onStop(()=>{
			this.setData({
				isPlay:false
			})
			app.globalData.isMusicPlay = false;
		});
		 // 监听音乐播放自然结束
		 this.backgroundAudioManager.onEnded(() => {
			// 自动切换至下一首音乐，并且自动播放
			this.handleSwitch('next');
			// PubSub.publish('switchType', 'next')
			// 将实时进度条的长度还原成 0；时间还原成 0；
			this.setData({
			  currentWidth: 0,
			  currentTime: '00:00'
			})
		  });
		 // 监听音乐实时播放的进度
		 this.backgroundAudioManager.onTimeUpdate(() => {
			// 格式化实时的播放时间
			let currentTime = moment(this.backgroundAudioManager.currentTime * 1000).format('mm:ss')
			let currentWidth = this.backgroundAudioManager.currentTime/this.backgroundAudioManager.duration * 450;
			this.setData({
			  currentTime,
			  currentWidth
			})		
		  })
		
	},
	// 获取音乐详情的功能函数
	async getMusicInfo(id){
		let res = await request('/song/detail', {ids:id});
			if(res.code==200){
				// songData.songs[0].dt 单位ms
				let durationTime = moment(res.songs[0].dt).format('mm:ss');
				this.setData({
					song:res.songs[0],
					durationTime
				});	
				// 动态的修改窗口标题
				// wx.setNavigationBarTitle({
				// 	  title: this.data.song.name
				// })
			}				
	},
	// 点击播放暂停
	musicPlay(){
		let isPlay = !this.data.isPlay
		let {musicId, musicLink} = this.data;
		this.musicControl(isPlay, musicId, musicLink)
	},
	// 播放暂停歌曲函数
	async musicControl(isPlay, musicId, musicLink){	
		if(isPlay){ // 音乐播放
			if(!musicLink){
			  // 获取音乐播放链接
			  let musicLinkData = await request('/song/url', {id: musicId});
				musicLink = musicLinkData.data[0].url;
			  this.setData({
				musicLink
			  })
			}
			this.backgroundAudioManager.src = musicLink;
			this.backgroundAudioManager.title = this.data.song.name
		
	}else{ //暂停
			this.backgroundAudioManager.pause()
		}
	},
	// 点击切换歌曲
	handleSwitch(event){
		 // 获取切歌的类型
		 let type
		 if(event.currentTarget){
			 type = event.currentTarget.id;
		 }else{
			 type = event;
		 }
    
		 // 关闭当前播放的音乐
		 this.backgroundAudioManager.stop();
		 // // 订阅来自recommendSong页面发布的musicId消息
		 PubSub.subscribe('musicId', (msg, musicId) => {
		   // 获取音乐详情信息
		   this.getMusicInfo(musicId);
		   // 自动播放当前的音乐
		   this.musicControl(true, musicId);
		   // 取消订阅
		   PubSub.unsubscribe('musicId');
		 })
		 // 发布消息数据给recommendSong页面
		 PubSub.publish('switchType', type)
	},
	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {

	}
})